[官方文档翻译]Mac使用VS Code配置C++编译和调试环境 |
您所在的位置:网站首页 › mac配置vscode c语言 › [官方文档翻译]Mac使用VS Code配置C++编译和调试环境 |
Mac使用VS Code配置C++编译和调试环境
这是一篇翻译稿,原文为VSCode官方Docs。 文章目录 Mac使用VS Code配置C++编译和调试环境Prerequisites确保安装了Clang创建 Hello World添加hello world源码文件探索 IntelliSense 构建 helloworld.cpp编译程序改进 tasks.json 调试 helloworld.cpp开始调试跨步调试设置一个监视器(WATCH) 配置C/C++可能出现的问题 在这个教程中,你将学会如何在macOS环境下配置VS Code来使用clang/LLVM编译器和调试器。 Prerequisites在开始这个教程之前,你需要先安装好: MacOS 版的Visual Studio Code;VSCode C++ 插件:在插件栏搜索 “C++”(或者使用快捷键⇧+⌘+X),安装如下插件:![]() 通常来讲,Mac上已经安装好了clang。可以通过检查clang版本的方式来查看clang是否安装: clang --version如果没有出现以下输出: clang version 10.0.1 Target: x86_64-apple-darwin19.6.0 Thread model: posix InstalledDir: /opt/anaconda3/envs/root_env/bin那么考虑重新安装clang。可以通过以下命令来安装命令行工具(command line develop tools): xcode-select --install 创建 Hello World在终端创建一个用来存放所有项目文件的空文件夹,名为project。然后在这个文件夹中创建一个子文件夹,命名为helloworld,然后在这个子文件夹中打开VS Code。 mkdir project cd project mkdir helloworld cd helloworld code .code . —— 在当前文件夹下打开VS Code,并且当前的文件夹成为默认工作空间(workspace)。在接下来的教程中,我们将会在这个工作空间的.vscode(自动创建的文件夹) 文件夹中创建如下的3个文件: tasks.json : 编译器编译的设置文件launch.json : 调试器设置文件c_cpp_properties.json : 编译器路径以及IntelliSense设置如果提示code命令未安装,则手动打开vscode进行安装: 使用 command + shift + p (注意window 下使用 ctrl + shift + p ) 然后搜索code,选择 install ‘code’ command in path。 添加hello world源码文件在File Explorer中新建一个helloworld.cpp: 上面的文件和默认的tasks.json的主要区别在以下两个位置: "args" 更新为适用于C++17的编译器,因为helloworld.cpp使用了C++17中的特性。将当前工作路径("cwd")设置为helloworld.cpp所在的文件夹。 "command" 用于指定用来编译当前源码的程序。在我们这里,"clang++"被用来驱动Clang编译器将我们的代码和C++标准库链接起来。"args" 定义了传递给clang++的命令行参数。这些参数的顺序必须满足编译器对输入参数的顺序的要求。"label" 标志的是你将在任务列表中看到的内容。"problemMatcher" 指定了用来从编译器的输出中寻找error和warning的输出解释器。对于clang++而言,通过"\$gcc"可以获得最佳的输出解释器。"isDefault" 用来设置运行的快捷键。当其值为true时,可以通过⇧+⌘+B 来进行编译。如果设置为false,那么需要通过 Terminal > Run Build Task 来进行编译。tasks.json中描述的任务是:使用C++编译器编译当前的“active file”,并在当前的文件夹下生成一个和“active file”同名的输出文件。"args"中的“-o”是一个指定输出的开关,后面紧跟着的是输出文件的位置和名字, “${fileDirname}“指的是当前的工作路径,”${fileBasenameNoExtension}” 是“active file”去掉扩展名之后剩下的字符,在这个例子中,也就是“helloworld”。 关于tasks.json,更加详细的描述可以参考一下内容:VS Code 变量参考 编译程序 返回到helloworld.cpp, 因为我们需要使它成为“active file”。运行我们在tasks.json中写好了的任务。使用快捷键⇧+⌘+B 或者 Terminal > Run Build Task 来进行编译。当任务开始以后,你将会在编辑器的下面看到一个集成在VS Code中的终端窗口。当编译结束以后,你将会在终端窗口中看到当前编译是否成功的提示信息。如果编译成功了,你将看到一下信息:![]() ![]() 接下来,你将创建launch.json文件来配置LLDB 调试器。F5为启动调试的快捷键。 从菜单栏选择 Run > Add Configuration… ,然后从下滑的选项栏中选择 clang++ build and debug active file 。 ![]() 现在,可以开始一步步调试代码了! 点击调试面板上的“Step Over”,可以看到for (const string& word : msg)被高亮了。![]() 当你需要一直监测某一个变量时时,可以通过设置一个监视器来实现。 在编辑窗口中,将插入光标停在循环内部,然后在左侧的WATCH tab中点击 + (当光标悬停在WATCH的标题栏上时,右侧会出现相关选项),然后在输入框中输入需要监测的变量的名字,例如word。 想要快速查看被监测的变量的值时,可以将光标悬停在监测变量的上方(WATCH tab内)。 C/C++ 插件提供了更多更加自由的配置选项,例如,设置编译器的路径,库的头文件的位置等等。这些配置需要通过编写c_cpp_properties.json来实现。c_cpp_properties.json的编写可以通过图形界面来实现自动生成。点击⇧+⌘+P唤出命令面板,输入C/C++,然后选择 C/C++: Edit Configurations (UI) 。 通常来讲,这个文件只有在当你需要使用标准库以外的库时需要修改"includePath"。有些情况下,也有可能找到标准库,这时也需要手动修改(个人经验)。 这时可以参考这篇博客. compilerPath : 这是很重要的设置,因为C/C++插件将根据这个路径去寻找到标准库的头文件。而只有当C/C++插件可以找到标准库的头文件时,自动补全等功能才能正常使用。C/C++插件对compilerPath的默认设置是根据它在你的系统中搜索到的编译器的路径来决定的。C/C++插件的搜索顺序是: PATH 中制定的编译器硬编码的 Xcode的路径, 例如:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/macFrameworkPath : 在C/C++插件的配置页面,展开最下面的“Advanced Settings”,确保macFrameworkPath 指向系统的头文件,例如:/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks 笔者的环境下没有安装这个,也许这是出现找不到标准库头文件的原因。不过我安装了Xcode,所以可以使用:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks 可能出现的问题 常见的问题是:undefined _main 或者 attempting to link with file built for unknown-unsupported file format。这个往往是因为编译的时候helloworld.cpp不是“active file”导致的。如果你的错误提示中出现“C++11 extensions”, 你可能需要更新你的tasks.json, 将args中的clang++ 参数修改为--std=c++17, 因为默认情况下,clang++ 使用的是C++98; |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |